home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / t3_1 / risc_src.lha / risc_sources / comp / fixes.t
Text File  |  1990-06-11  |  1KB  |  31 lines

  1. 6/8/90  parassign.t
  2.  
  3. (define (do-indirects node do-later) 
  4.   (iterate loop ((items do-later))
  5.     (if items
  6.         (let ((item (car items))
  7.               (contour (lambda-self-var *heap-env*)))
  8.           (receive (mover target) (get-mover-and-target item) 
  9.             (cond ((eq? (register-loc contour) target)
  10.                    (if (cdr items)
  11.                        (loop (append (cdr items) (cons item '())))
  12.                        (mover node (car item) target)))
  13.           ((eq? (temp-loc contour) target)
  14.                    (cond ((not (cdr items))
  15.               (mover node (car item) target))
  16.              ((receive (#f target) (get-mover-and-target (cadr items))
  17.                (eq? (register-loc contour) target))
  18.               (set (temp-loc contour) nil)
  19.               (set (temp-node target) nil)
  20.               (mover node (car item) target)
  21.               (loop (cdr items)))
  22.              (else
  23.               (loop (append (cdr items) (cons item '()))))))
  24.                   (else
  25.                    (mover node (car item) target)
  26.                    (loop (cdr items)))))))))
  27.  
  28. 6/11/90  closure.t
  29.  
  30. (set (variable-number *dummy-var*) 0)
  31.